package com.ruoyi.system.api.mapper;

import com.ruoyi.system.api.domain.StReportPort;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.bind.annotation.RequestParam;

import javax.validation.constraints.Past;
import java.util.List;

/**
 * 报告与备件的关系 （包括服务报告和电话解决报告）Mapper接口
 * 
 * @author ruoyi
 * @date 2020-03-03
 */
public interface StReportPortMapper 
{
    /**
     * 查询报告与备件的关系 （包括服务报告和电话解决报告）
     * 
     * @param id 报告与备件的关系 （包括服务报告和电话解决报告）ID
     * @return 报告与备件的关系 （包括服务报告和电话解决报告）
     */
    public StReportPort selectStReportPortById(Long id);
    public List<StReportPort> selectServicetReportPortByReportIdAndPortType(long id);
    public List<StReportPort> selectErrorReportPortByReportIdAndPortType(long id);
    public List<StReportPort> selectHotReportPortByReportIdAndPortType(long id);
    public List<StReportPort> selectAcceptReportPortByReportIdAndPortType(long id);
    public List<StReportPort> selectInstallationReportPortByReportIdAndPortType(long id);
    public List<StReportPort> selectPhoneReportPortByReportIdAndPortType(long id);
    /**
     * 查询报告与备件的关系 （包括服务报告和电话解决报告）列表
     * 
     * @param stReportPort 报告与备件的关系 （包括服务报告和电话解决报告）
     * @return 报告与备件的关系 （包括服务报告和电话解决报告）集合
     */
    public List<StReportPort> selectStReportPortList(StReportPort stReportPort);

    /**
     * 新增报告与备件的关系 （包括服务报告和电话解决报告）
     * 
     * @param stReportPort 报告与备件的关系 （包括服务报告和电话解决报告）
     * @return 结果
     */
    public int insertStReportPort(StReportPort stReportPort);

    /**
     * 修改报告与备件的关系 （包括服务报告和电话解决报告）
     * 
     * @param stReportPort 报告与备件的关系 （包括服务报告和电话解决报告）
     * @return 结果
     */
    public int updateStReportPort(StReportPort stReportPort);

    /**
     * 删除报告与备件的关系 （包括服务报告和电话解决报告）
     * 
     * @param id 报告与备件的关系 （包括服务报告和电话解决报告）ID
     * @return 结果
     */
    public int deleteStReportPortById(Long id);

    /**
     * 批量删除报告与备件的关系 （包括服务报告和电话解决报告）
     * 
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteStReportPortByIds(String[] ids);

    /**
     *  移除报告备件信息
     *
     * @param reportPort
     * @return int
     * @author yzg
     * @date 2020-03-03 15:10
     */
    public int updateStReportPortById(StReportPort reportPort);

    /**
     *  根据ReportId查询服务报告备件信息
     *
     * @param reportId
     * @return java.util.List<com.ruoyi.system.api.domain.StReportPort>
     * @author yzg
     * @date 2020-03-03 16:00
     */
    public List<StReportPort> selectStReportPortListByReportId(Long reportId);

    /**
     *  根据serviceNo和备件辅助id及portType查询报告备件信息
     *
     * @param serviceNo
     * @param helpId
     * @param portType
     * @return java.util.List<com.ruoyi.system.api.domain.StReportPort>
     * @author yzg
     * @date 2020/3/4 3:12 下午
     */
    public List<StReportPort> selectStReportPortListByServiceNoAndHelpIdAndPortType(@Param("serviceNo") String serviceNo, @Param("helpId") String helpId, @Param("portType") String portType);

    /**
     *  更新报告关联备件信息
     *
     * @param helpId
     * @param serviceNo
     * @param reportId
     * @return int
     * @author yzg
     * @date 2020/3/4 7:18 下午
     */
    public int updatePhoneReportPortByHelpIdAndServiceNo(@Param("reportId") Long reportId, @Param("helpId") String helpId, @Param("serviceNo") String serviceNo);

    /**
     *  根据reportId 及 portType 查询备件信息
     *
     * @param reportId
     * @param portType 备件类型 1 服务报告 2 电话解决报告 3 Error Report 4 Hot Account Report
     * @return java.util.List<com.ruoyi.system.api.domain.StReportPort>
     * @author yzg
     * @date 2020/3/7 11:47 上午
     */
    public List<StReportPort> selectStReportPortListByReportIdAndPortType(@Param("reportId") Long reportId, @Param("portType") String portType);

    /**
     * 查询已完成服务报告涉及到的备件信息
     * @methodName: getReportPort
     * @description: TODO
     * @param serviceNo
     * @return: java.util.List<com.ruoyi.system.api.domain.StReportPort>
     * @author: shihx
     * @date: 2020-03-30 11:24
    **/
    public List<StReportPort> getReportPort(@Param("serviceNo") String serviceNo);

    public List<StReportPort> getReportPorts(@Param("serviceNo") String serviceNo);
    public List<StReportPort> getSubmitReportPorts(@Param("serviceNo") String serviceNo);
    public List<StReportPort> getReportPortsByItemReportId(@Param("serviceNo") String serviceNo);
    public List<StReportPort>  getServiceAndPhoneReport(@Param("serviceNo") String serviceNo);
    int  getServiceAndPhoneReportCount(@Param("serviceNo") String serviceNo);
    public List<StReportPort> getSubmitServiceAndPhoneReportPorts(@Param("serviceNo") String serviceNo);
    /**
     *  根据reportId更新cc同步状态
     *
     * @param reportId
     * @return int
     * @author yzg
     * @date 2020/4/7 3:06 下午
     */
    public int updateCcSyncStatusByReportId(@Param("reportId") Long reportId);

    int selectUnsubmittedPartQtyCount(@Param("partNumber") String partNumber, @Param("enginnerId") String enginnerId);

    int selectUnsubmittedPartQtyCountByServiceNoAndHelpId(@Param("partNumber") String partNumber, @Param("serviceNo") String serviceNo, @Param("helpId") String helpId, @Param("enginnerId") String enginnerId);

    List<StReportPort> selectUnsubmittedPartQtyCountList(@Param("enginnerId") String enginnerId);

    List<StReportPort> selectUnsubmittedPartQtyCountListByServiceNoAndHelpId(@Param("serviceNo") String serviceNo, @Param("helpId") String helpId, @Param("enginnerId") String enginnerId);


    /**
     * 查询服务报告备件总费用
     * @methodName: selectReportPortsPrices
     * @description: TODO
     * @param serviceNo
     * @param helpId
     * @param portType
     * @return: double
     * @author: shihx
     * @date: 2020-06-10 17:18
    **/
    public double selectReportPortsPrices(@Param("serviceNo") String serviceNo, @Param("helpId") String helpId, @Param("portType") String portType);

}
